$(document).ready(function() {
	rolePage.init();
});
var rolePage = {
	listUrl : _webApp + '/system/role/list',
	saveUrl : _webApp + '/system/role/save',
	delUrl : _webApp + '/system/role/delete',
	rolePermissionUrl : _webApp + '/system/role/getRolePermission',
	permissionUrl : _webApp + '/system/permission/list',
	choosePermissionUrl : _webApp + '/system/role/getChoosePermissions',
	editorUrl : _webApp + '/system/role/editer',
	/**
	 * 初始化
	 */
	init : function() {
		this.initGrid();
		this.initSearch();
	}, 
	/**
	 * 打开子窗口
	 */
	openSubWindow : function(url) {
		$('#roleEditorFrame').attr('src',url);
		//var win = window.open(url);
		//this.subWindows.jindu(win);
	},
	/**
	 * 初始化数据grid
	 */
	initGrid : function() {
		this.dataGrid = $('#data_gird')
				.datagrid(
						{
							url : this.listUrl,
							sortName : "id",
							sortOrder : "asc",
							idField : "id",
							height : autoHeight(),
							width: rolePage.autoWidth(),
							nowrap : true,
							pagination : true,
							rownumbers : true,
							pageSize : 30,
							autoRowHeight : false,
							singleSelect : true,
							checkOnSelect : false,
							selectOnCheck : false,
							columns : [ [
									{
										field : 'id',
										title : 'ID',
										sortable : true,
										hidden : true
									},{
										field : 'version',
										title : 'version',
										sortable : true,
										hidden : true
									},
									{
										field : 'name',
										title : '名称',
										width : 100,
										sortable : true
									},
									{
										field : 'role',
										title : '标识',
										width : 100,
										sortable : true
									},
									{
										field : 'description',
										title : '描述',
										sortable : true
									},

									{
										field : 'operate',
										title : '操作',
										align : 'center',
										formatter : function(value, row, index) {
											var html = ''; 
											if (p_delete) {
												html += '<a class="operate_btn" href="javascript:rolePage.del();">删除</a>';
											}
											return html;
										}
									} ] ],
							toolbar : [ {
								text : '新增',
								iconCls : 'i_add',
								disabled : !p_create,
								handler : function() {
									rolePage.add();
								}
							}, {
								text : '删除',
								iconCls : 'i_delete',
								disabled : !p_delete,
								handler : function() {
									rolePage.del();
								}
							} ],
							onClickRow:function(rowData){ 
								rolePage.edit();
							}
						
						});
		
		$(window).resize(function() {
			this.dataGrid.treegrid('resize', {
				height : autoHeight(),
				width:   rolePage.autoWidth()
			});
			rolePage.dataGridFloatLeft();
		});
		$('#roleEditorFrameDiv').height(autoHeight());
		rolePage.dataGridFloatLeft();
	},

	dataGridFloatLeft:function(){
		$('.panel').css('float','left');
	},
	/**
	 * 编辑
	 */
	edit : function() {
		var row = this.dataGrid.datagrid('getSelected');
		if (row) {
			var id = row.id;
			this.openSubWindow(this.editorUrl + '?id=' + id);
		} else {
			$.messager.alert('提示', '请勾选需要编辑的角色!');
		}
	},
	/**
	 * 编辑弹出框
	 */
	editDialog : function(title) {
		var $thisDialog = $('#editPanle');
		$thisDialog.dialog({
			title : title,
			width : 600,
			modal : true,
			resizable : true,
			buttons : [ {
				text : '保存',
				handler : function() {
					$thisDialog.dialog("close");
				}
			}, {
				text : '取消',
				handler : function() {
					$thisDialog.dialog("close");
				}
			} ]
		});
	},
	/**
	 * 初始化搜索栏
	 */
	initSearch : function() {
		// 对搜索按钮和单选框绑定点击搜索事件
		$("#search .search_btn,#search input:radio").click(function() {
			rolePage.search();
		});
		// 对搜索栏输入框绑定回车搜索事件
		$("#search input").keydown(function(event) {
			if (event.keyCode == 13) {
				rolePage.search();
			}
		});
	},
	/**
	 * 搜索
	 */
	search : function() {
		var searchData = $("#search form").serializeJson();
		rolePage.dataGrid.datagrid('load', searchData);
		// 清楚所有选中项，防止出现删除后的项目依然存在于选中项中
		this.dataGrid.datagrid("clearChecked");
	},
	/**
	 * 刷新
	 */
	refresh : function() {
		this.dataGrid.datagrid("reload");
		// 清楚所有选中项，防止出现删除后的项目依然存在于选中项中
		this.dataGrid.datagrid("clearChecked");
	},

	/**
	 * 新增
	 */
	add : function() {
		$('#roleEditorFrame').attr('src',this.editorUrl); 
	},
	/**
	 * ajax储存
	 */
	ajaxToSave : function() {
		var rows = this.extraPermissionGird.datagrid("getRows");
		var permissionIds = new Array();
		if (rows) {
			for ( var i in rows) {
				permissionIds.push(rows[i].id);
			}
		}
		var options = {
			url : this.saveUrl,
			beforeSubmit : this.validate, // 表单元素有效性验证
			data : {
				permissionIds : permissionIds
			},
			success : function(data) {
				alert(data);
				if (typeof data == 'object') {
					if (data.result == "success") {
						messagerShow("保存成功");
						rolePage.switchEditPanle(1);
					} else {
						$.messager.alert("结果", "保存错误");
					}
					rolePage.refresh();
				} else if (typeof data == 'string') {
					if (data.indexOf("用户权限不足") >= 0) {
						$.messager.alert("警告", "用户权限不足");
					}
				}
			}
		};
		$('form', this.editPanle).ajaxSubmit(options);
	},
	/**
	 * 表单元素有效性验证，使用jquery.validate插件
	 */
	validate : function(arr, $form, options) {
		// jquery.validate插件无及时验证方法，只能通过提交触发
		$form.validate({
			debug : true,
			rules : {
				name : {
					required : true
				},
				role : {
					required : true
				},
				description : {
					required : false
				},
			}
		});
		$form.submit();
		return $form.valid();
	},
	del : function() {
		var row = this.dataGrid.datagrid('getSelected');
		if (row) {
			var html = '<span class="cRed">' + row.name + '[' + row.role
					+ ']</span>';
			$.messager.confirm('确认信息？', '确认删除：' + html, function(r) {
				if (r) {
					var ids = new Array();
					ids.push(row.id);
					rolePage.ajaxToDelte(ids);
				}
			});
		} else {
			$.messager.alert('提示', '请选择需要删除的数据!');
		}
	},
	autoWidth : function() {
		var width = 0;
		if ($("#operateArea")) {
			width = document.documentElement.clientWidth*0.25;
		} else {
			width = document.documentElement.clientWidth*0.25;
		}  
		return width;
	},
	/**
	 * ajax删除
	 */
	ajaxToDelte : function(ids) {
		var url = this.delUrl;
		$.post(url, {
			ids : ids
		}, function(data) {
			window.location.reload();
		});
	},
	/**
	 * 切换编辑面板
	 */
	switchEditPanle : function(type) {
		switch (type) {
		case 1:
			$("#edit_panle .norecord").show();
			$("#edit_panle .record").hide();
			rolePage.editPanle.panel({
				title : "角色详细信息"
			});
			break;
		case 2:
			$("#edit_panle .record").show();
			$("#edit_panle .norecord").hide();
			break;
		}
	},
	/**
	 * 增加权限
	 */
	addPermission : function() {
		var roleId = $('input[name="id"]', this.editPanle).val();
		if (!this.permissionGrid) {
			this.initPermissionGrid(roleId);
		}
		// 清空搜索表单，并且通过搜索刷新grid
		$("#permission_search form").form('clear');
		$('#permission_search form input[name="roleId"]').val(roleId);
		this.permissionSearch();
		var $thisDialog = $('#permission_dialog');
		$thisDialog.dialog({
			title : "添加角色权限",
			width : 680,
			height : 420,
			modal : true,
			resizable : true,
			buttons : [
					{
						text : '确定',
						handler : function() {
							// 清空原有数据
							rolePage.extraPermissionGird.datagrid('loadData', {
								total : 0,
								rows : []
							});
							var rows = rolePage.permissionGrid
									.datagrid("getChecked");
							for ( var i in rows) {
								rolePage.extraPermissionGird.datagrid(
										"appendRow", rows[i]);
							}
							$thisDialog.dialog("close");
						}
					}, {
						text : '取消',
						handler : function() {
							$thisDialog.dialog("close");
						}
					} ]
		});
	},
	delPermission : function() {
		var gird = this.extraPermissionGird;
		var row = gird.datagrid('getSelected');
		if (row) {
			var index = gird.datagrid('getRowIndex', row);
			gird.datagrid('deleteRow', index);
		}
	},
	/**
	 * 获取已经选择的权限ID数组
	 */
	hasPermissions : function() {
		var rows = this.extraPermissionGird.datagrid("getRows");
		var permissionIds = new Array();
		for ( var i in rows) {
			permissionIds.push(rows[i].id);
		}
		return permissionIds;
	},
	initPermissionGrid : function() {
		this.permissionGrid = $('#permission_gird').datagrid({
			url : this.choosePermissionUrl,// this.choosablePermissionUrl,
			sortName : "id",
			sortOrder : "asc",
			idField : "id",
			// fit:true,
			height : 347,
			nowrap : true,
			pagination : true,
			rownumbers : true,
			pageSize : 200,
			pageList : [ 200 ],
			striped : true,
			autoRowHeight : false,
			columns : [ [ {
				checkbox : true
			}, {
				field : 'id',
				title : 'ID',
				sortable : true,
				hidden : true,
				formatter : function(value, row, index) {
					if ($.inArray(row.id, rolePage.hasPermissions()) >= 0) {
						rolePage.permissionGrid.datagrid('checkRow', index);
					}
				}
			}, {
				field : 'name',
				title : '名称',
				width : 120,
				sortable : true
			}, {
				field : 'permission',
				title : '权限字符',
				width : 180,
				sortable : true
			}, {
				field : 'description',
				title : '描述',
				width : 200,
				sortable : true
			}, {
				field : 'type',
				title : '权限类型',
				width : 85,
				align : 'center',
				sortable : true,
				formatter : function(value, row, index) {
					var html = value;
					switch (value) {
					case 0:
						html = "操作权限";
						break;
					case 1:
						html = "资源权限";
						break;
					}
					return html;
				}
			} ] ],
			onLoadSuccess : function() {

			}
		});
		this.initPermissionSearch();
	},
	/**
	 * 初始化搜索栏
	 */
	initPermissionSearch : function() {
		// 对搜索按钮和单选框绑定点击搜索事件
		$("#permission_search .search_btn,#permission_search input:radio")
				.click(function() {
					rolePage.permissionSearch();
				});
		// 对搜索栏输入框绑定回车搜索事件
		$("#permission_search input").keydown(function(event) {
			if (event.keyCode == 13) {
				rolePage.permissionSearch();
			}
		});
	},
	/**
	 * 搜索
	 */
	permissionSearch : function() {
		var searchData = $("#permission_search form").serializeJson();
		this.permissionGrid.datagrid('load', searchData);
		// 清楚所有选中项，防止出现删除后的项目依然存在于选中项中
		this.permissionGrid.datagrid("clearChecked");
	}
};
